#include <iostream>
#include <functional>
#include <memory>
#include "Log.hpp"
#include "Tcpserve.hpp"  // 处理IO的
#include "Cacul.hpp" // 处理业务的

Calculator calculator;

//for debug

void DefaultOnMessage(std::weak_ptr<Connection> conn)
{
    if(conn.expired()) return;
    auto connection_ptr = conn.lock();
    // 对报文进行处理，有bug
    std::cout << "上层得到了数据： " << connection_ptr->Getinbuffer() << std::endl;
    std::string response_str = calculator.Handler(connection_ptr->Getinbuffer()); // 我们的业务逻辑比较简单，没有特别耗时的操作
    if(response_str.empty()) return;
    lg(Debug, "%s", response_str.c_str());
    // response_str 发送出去
    connection_ptr->Appendoutbuffer(response_str);
    // 正确的理解发送？
    // connection_ptr->_send_cb(connection_ptr);
    
    auto tcpserver = connection_ptr->tcp.lock();
    tcpserver->Send(connection_ptr);
}

int main()
{
    shared_ptr<Tcpserve> ts(new Tcpserve(9998,DefaultOnMessage));
    ts->Init();
    ts->start();
    return 0;
}